home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GEMFUNCS / WCSCRCAL.C < prev    next >
C/C++ Source or Header  |  1993-03-07  |  1KB  |  52 lines

  1. /*****************************************************************************
  2.  * WCSCRCAL.C - Calc size and position of a scroller.
  3.  *
  4.  *      Note that this function's real name is wc_scrcal as far as the
  5.  *      linker is concerned, since HSC has a 8-char limit. scrcal is a
  6.  *      bit too cryptic, so a macro in gemfast.h remaps the name to
  7.  *      wc_scroll_calc for us.
  8.  ****************************************************************************/
  9.  
  10. #include "gemfintl.h"
  11.  
  12. void wc_scroll_calc(curline, datalines, windowlines, 
  13.                     pslidesize, pslidepos)
  14.     short curline;
  15.     short datalines; 
  16.     short windowlines;
  17.     short *pslidesize; 
  18.     short *pslidepos;
  19. /**************************************************************************
  20.  * calc the size and position of a slider (eg, a window scroll slider).
  21.  *************************************************************************/
  22. {
  23.     short slsize = 1000;
  24.     short slpos  = 1;
  25.  
  26.     if (windowlines >= datalines) {
  27.         goto ERROR_EXIT;
  28.     }
  29.  
  30.     slsize = (short)((1000L * windowlines) / datalines);
  31.     slpos  = (short)((1000L * curline) / (datalines - windowlines));
  32.  
  33.     if (slsize < gl_hchar) {
  34.         slsize = -1;
  35.     } else if (slsize > 1000) {
  36.         slsize = 1000;
  37.     }
  38.  
  39.     if (slpos < 1) {
  40.         slpos = 1;
  41.     } else if (slpos > 1000) {
  42.         slpos = 1000;
  43.     }
  44.  
  45. ERROR_EXIT:
  46.  
  47.     *pslidesize = slsize;
  48.     *pslidepos  = slpos;
  49. }
  50.  
  51.  
  52.